/**
 * @defgroup TestObjectIO 关于Java结构化读写机制的例子
 * @author 李焕帅
 * @version 0.1
 * @date 01/08/2012
 * @{
 */
package indd.lihs.basic.javabasictester.io;

import java.io.*;
import java.util.*;

/**
 * @name 测试类型定义
 * @{
 */
public class TestObjectIO
{
    /**
     * 主函数
     * @param[in] args 参数字符串数组
     * @return void
     * @note 某个方法可能抛出某种异常,但其中没有定义相应的捕获代码.这时如果抛出,\n
     * 则系统直接退出该方法,并将异常发回给调用者其中, 如果父类的方法没有声明某种必\n
     * 检异常,子类进行方法覆盖时,也不能声明
     */
	public static void main(String[] args) throws IOException, 
	                        ClassNotFoundException
	{
		//输出
		ObjectOutputStream fout = new ObjectOutputStream(
				new BufferedOutputStream(new FileOutputStream("obj.dat")));
		fout.writeUTF("张山");
		fout.writeInt(20);
		fout.writeObject(new Date());
		fout.close();
		
		//输入
		ObjectInputStream fin = new ObjectInputStream(
				new BufferedInputStream(new FileInputStream("obj.dat")));
		String name = fin.readUTF();
		int age = fin.readInt();
		Date date =(Date)(fin.readObject()); //此句可能抛出ClassNotFoundException
		fin.close();
		
		//展示
		System.out.println("NAME: " + name);
		System.out.println("AGE: " + age);
		System.out.println("DATE OF FILLING: " + date);
	}
}

/** @}*/ //文件读写测试类型定义

/** @}*/ //模块定义
